class UserController < ApplicationController
  # 共通レイアウト定義
  layout "mainpage"

  # フィルタ定義
  before_filter :login_required # ログインチェック
  before_filter :get_project_info # 更新時もタブ情報の取得は必要
  before_filter :user_required # ユーザーチェック

  #
  #=== アカウント情報編集ページを表示
  #
  #指定されたユーザのアカウント情報を取得して，編集ページを表示する
  #
  def edit
    if ! params[:id].nil?
      id = params[:id]
      # ユーザーオブジェクト取得
      @user = MstUser.find(id)
      # 08.06.26 nakahara パスワードについては、空白設定（更新時空白以外のみ更新）
      @user.password = "" ;
      @user.password_confirmation = "" ;
    end
  end

  #
  #=== アカウント情報更新
  #
  #指定されたユーザのアカウント情報をフォームデータで更新する
  #
  def update
    if params[:user][:id].nil? || params[:user][:id].empty?
      #-----------------------------
      # 新規作成時
      #-----------------------------
    else
      #-----------------------------
      # 編集時
      #-----------------------------
      id = params[:user][:id]
      @user = MstUser.find(id)
      @user.update_user_id = @user.id
      @user.password_confirmation = @user.password

      #  08.06.26 nakahara パスワードが空白の場合は、変更なしとして、
      #  　　　　　　　　　　　　元のパスワードをセットする
      password = params[:user][:password]
      password_confirmation = params[:user][:password_confirmation] 
      if password.nil? || password.empty?
        # 08.06.26 nakahara 元パスワードをそのままセット（更新なし）
        params[:user][:password] = @user.password
        params[:user][:password_confirmation] = @user.password_confirmation
      else
        # 08.06.26 nakahara リクエストパラメータ値をハッシュ値に変換（モデルでのbefore_createがはずされているため）
        params[:user][:srcpassword] = password
        params[:user][:password] = MstUser.sha1( password )
        params[:user][:password_confirmation] = MstUser.sha1( password_confirmation )
      end

      if ! @user.update_attributes(params[:user])
        # 08.06.26 nakahara パスワードについては、空白設定（更新時空白以外のみ更新）
        @user.password = "" ;
        @user.password_confirmation = "" ;

        render :action=>'edit'
        return 
      end
    end

    # 編集ページへ
    redirect_to :action => 'edit', :id=>@user.id

  end


  protected

  #
  #=== ユーザの権限チェック
  #
  #ユーザ指定アクションにおいて，指定されたユーザIDとログイン中のユーザIDが同一かどうかをチェックする．
  #等しい場合はtrueを返却，異なる場合はメッセージを表示して終了．
  #
  def user_required
    ret = true
    if ! params[:id].nil?  
      if params[:id] != session["user"]["id"].to_s
        ret = false
      end
    end  
    if ! params[:user].nil?  
      if params[:user][:id] != session["user"]["id"].to_s
        ret = false
      end
    end

    if ! ret
      render :text=>"Permission Denied!!"
    end

    return ret
  end

end
